
# property 方法一  property 作为装饰器的用法
class Girl():
    def __init__(self,name,age):
        self.__age = age  #加两个下滑线就是一个私有化的属性，只能在类中使用
    @property  #作用就是将一个方法 返回成一个属性, 会再生成另外一个装饰器
    def age(self):  #获取年龄的一个方法
        return self.__age
    @age.setter
    def age(self,new_age):
        if 0<= new_age <=100:
            self.__age = new_age
        else:
            print('年龄错误！')

lily = Girl('lily',18)

# lily.set_age(30)
lily.age = 150
print(lily.age)

#property 方法二
'''
把一个私有属性，暴露出去，让类外部可以访问，也可以修改
property 作为内置函数的用法
'''
class Girl():
    def __init__(self,name,age):
        self.__age = age  #加两个下滑线就是一个私有化的属性，只能在类中使用

    def get_age(self):  #获取年龄的一个方法
        return self.__age

    def set_age(self,new_age):  #修改年龄的方法
        if 0<= new_age <=100:
            self.__age = new_age
        else:
            print('年龄错误！')

    def del_age(self):
        del self.__age
    #property()是一个python系统内置的方法，
    age = property(get_age,set_age,del_age)

lily = Girl('lily',18)
lily.age = 30
# print (lily.get_age ())
# del lily.age
# print (lily.age)
print (lily.__dict__)